package com.example.cursor_orm.dao;

import com.example.cursor_orm.model.AttributePolicy;
import java.util.List;

/**
 * 属性策略DAO接口
 * 继承BaseDAO并添加属性策略特有的查询方法
 */
public interface AttributePolicyDAO extends BaseDAO<AttributePolicy> {
    
    /**
     * 根据角色ID查询属性策略列表
     * @param roleId 角色ID
     * @return 属性策略列表
     */
    List<AttributePolicy> findByRoleId(Integer roleId);
    
    /**
     * 根据权限ID查询属性策略列表
     * @param permissionId 权限ID
     * @return 属性策略列表
     */
    List<AttributePolicy> findByPermissionId(Integer permissionId);
    
    /**
     * 根据角色ID和权限ID查询属性策略列表
     * @param roleId 角色ID
     * @param permissionId 权限ID
     * @return 属性策略列表
     */
    List<AttributePolicy> findByRoleIdAndPermissionId(Integer roleId, Integer permissionId);
    
    /**
     * 根据属性键查询属性策略列表
     * @param attributeKey 属性键
     * @return 属性策略列表
     */
    List<AttributePolicy> findByAttributeKey(String attributeKey);
    
    /**
     * 根据属性值查询属性策略列表
     * @param attributeValue 属性值
     * @return 属性策略列表
     */
    List<AttributePolicy> findByAttributeValue(String attributeValue);
    
    /**
     * 根据属性键和属性值查询属性策略列表
     * @param attributeKey 属性键
     * @param attributeValue 属性值
     * @return 属性策略列表
     */
    List<AttributePolicy> findByAttributeKeyAndValue(String attributeKey, String attributeValue);
    
    /**
     * 删除角色的所有属性策略
     * @param roleId 角色ID
     * @return 影响的行数
     */
    int deleteByRoleId(Integer roleId);
    
    /**
     * 删除权限的所有属性策略
     * @param permissionId 权限ID
     * @return 影响的行数
     */
    int deleteByPermissionId(Integer permissionId);
} 